/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package INTERFAZ;

import CONTROLES.ControlEmpleado;
import CONTROLES.ControlEmpleo;
import CONTROLES.ControlSucursal;
import CONTROLES.ControlUsuario;
import MODELOS.Empleado;
import UTILITARIOS.Herramienta;
import UTILITARIOS.PanelPickFechas;
import UTILITARIOS.StringToDate;
import UTILITARIOS.UTextField;
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.border.TitledBorder;



/**
 *
 * @author Administrador
 */
public class EditarEmpleado extends JDialog implements Propiedades {

     
    private JLabel lblTitulo;
   
    private JPanel formulario;
    private JPanel botones;

    private JLabel lblNombreEmpleado;
    private UTextField txtNombreEmpleado;

     private JLabel lblApellido;
    private UTextField txtApellido;

     
     private JLabel lblCiudadEmp;
    private UTextField txtCiudadEmp;

     private JLabel lblTelfMovil;
    private UTextField txtTelfMovil;

     private JLabel lblTelfCasa;
    private UTextField txtTelfCasa;

    private JLabel lblNitEmpleado;
    private UTextField txtNitEmpleado;

    private JLabel lblGenero;
    private Choice genero;

    private JLabel lblSucursal;
    private Choice sucursal;

    private PanelPickFechas fechaNacimiento;

    private JLabel lblDireccion;
    private UTextField txtDireccion;

    private JLabel lblEmail;
    private UTextField txtEmail;

    private JLabel lblestado;
    private Checkbox estado;

    private JLabel lblEmpleo;
    private Choice empleo;

    private JLabel espacio;


    private JButton btnAceptar;
    private JButton btnCancelar;
    private JButton btnAgregar;

   // private ImageIcon im1=new ImageIcon(getClass().getResource("/imagenes/mano azul.jpg"));


    private int idEmpleado;
    public Empleado emp;
    public ControlEmpleado contEmp;

    ControlSucursal control = new ControlSucursal();
    String lista[] = control.nombresSuc();

    ControlEmpleo controlE = new ControlEmpleo();
    String listaE[] = controlE.nombresEmpleos();
    
    public EditarEmpleado()
    {
      
        setAlwaysOnTop(true);
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();

    }






    public void setProperties() {
        
	setSize(620, 560);
        setLayout(new FlowLayout());
        Image icon = new ImageIcon(getClass().getResource("/imagenes/nfn.png")).getImage();
        setIconImage(icon);
        setTitle("Edición de Empleado");
	setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	
	setResizable(false);

    }

    public void buildComponents() {

        lblTitulo = new JLabel(new ImageIcon(".\\src\\imagenes\\nfn.png"));

        lblSucursal = new JLabel("Sucursal(*) :", JLabel.RIGHT);
        sucursal = new Choice();

        for(int i=0; i<lista.length; i++){
          System.out.println("lista con tamano ="+lista[i]);
        sucursal.add(lista[i].toString());
        }

        lblEmpleo = new JLabel("Asignar Empleo(*) :", JLabel.RIGHT);
        empleo = new Choice();

        for(int i=0; i<listaE.length; i++){
          System.out.println("lista con tamano ="+listaE[i]);
        empleo.add(listaE[i].toString());
        }

        lblNombreEmpleado = new JLabel("Nombre(*) : ", JLabel.RIGHT );
        txtNombreEmpleado = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        lblApellido = new JLabel("Apellidos(*) : ", JLabel.RIGHT );
        txtApellido = new UTextField(UTextField.ONLY_CARACTERS_VALUE);


        lblCiudadEmp = new JLabel("Ciudad de Origen(*) : ", JLabel.RIGHT );
        txtCiudadEmp = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        lblTelfMovil = new JLabel("Teléfono Movil(*) : ", JLabel.RIGHT );
        txtTelfMovil = new UTextField(UTextField.PHONE_FAX_VALUE);

        lblTelfCasa = new JLabel("Teléfono Domicilio(*) : ", JLabel.RIGHT );
        txtTelfCasa = new UTextField(UTextField.PHONE_FAX_VALUE);

        lblNitEmpleado = new JLabel("CI / NIT(*) : ", JLabel.RIGHT );
        txtNitEmpleado = new UTextField(UTextField.INT_VALUE);

        lblGenero = new JLabel("Género(*) : ",JLabel.RIGHT);
        genero = new Choice();
        genero.add("MASCULINO");
        genero.add("FEMENINO");

        fechaNacimiento = new PanelPickFechas("Fecha de Nacimiento(*) : ");
       
        lblDireccion = new JLabel("Direccion Domicilio(*) : ", JLabel.RIGHT );
        txtDireccion = new UTextField();
        
        lblestado = new JLabel("Estado(*) : ",JLabel.RIGHT);
        estado = new Checkbox("Habilitado");

        lblEmail = new JLabel("Correo Electrónico : ", JLabel.RIGHT );
        txtEmail = new UTextField(UTextField.MAIL_VALUE);

        espacio = new JLabel();

        
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("ACTUALIZAR");
        btnCancelar = new JButton("CANCELAR");
       
    }

    public void setPropertiesComponents() {
        
        
        //titulo.setBackground(Color.DARK_GRAY);
        formulario.setBorder(BorderFactory.createTitledBorder(null,"Datos Personales",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        //titulo.setLayout(new FlowLayout());

        formulario.setLayout(new FlowLayout());
        formulario.setPreferredSize(new Dimension(550,410));
        //formulario.setBackground(Color.WHITE);
       botones.setPreferredSize(new Dimension(480, 80));
       //botones.setBackground(Color.WHITE);

        //titulo.setBorder(Herramienta.createTitleBorder("Registro de Usuarios"));
        
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(120,20);
	Dimension dimText = new Dimension(290,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

                //control.getUltimoIdUsuario()
                lblSucursal.setPreferredSize(dimLabel);
                lblSucursal.setFont(fontLabel);
                lblSucursal.setForeground(Color.BLACK);
                sucursal.setPreferredSize(dimText);
                sucursal.setEnabled(false);

                lblEmpleo.setPreferredSize(dimLabel);
                lblEmpleo.setFont(fontLabel);
                lblEmpleo.setForeground(Color.BLACK);
                empleo.setPreferredSize(dimText);

                lblNombreEmpleado.setPreferredSize( dimLabel );
		lblNombreEmpleado.setFont(fontLabel);
                lblNombreEmpleado.setForeground(Color.BLACK);
		txtNombreEmpleado.setPreferredSize( dimText );
                

                lblApellido.setPreferredSize( dimLabel );
		lblApellido.setFont(fontLabel);
                lblApellido.setForeground(Color.BLACK);
		txtApellido.setPreferredSize( dimText );

                lblCiudadEmp.setPreferredSize( dimLabel );
		lblCiudadEmp.setFont(fontLabel);
                lblCiudadEmp.setForeground(Color.BLACK);
		txtCiudadEmp.setPreferredSize( dimText );

                lblTelfMovil.setPreferredSize( dimLabel );
		lblTelfMovil.setFont(fontLabel);
                lblTelfMovil.setForeground(Color.BLACK);
		txtTelfMovil.setPreferredSize( dimText );

                lblTelfCasa.setPreferredSize( dimLabel );
		lblTelfCasa.setFont(fontLabel);
                lblTelfCasa.setForeground(Color.BLACK);
		txtTelfCasa.setPreferredSize( dimText );

                lblNitEmpleado.setPreferredSize( dimLabel );
		lblNitEmpleado.setFont(fontLabel);
                lblNitEmpleado.setForeground(Color.BLACK);
		txtNitEmpleado.setPreferredSize( dimText );

                lblGenero.setPreferredSize(dimLabel);
                lblGenero.setFont(fontLabel);
                lblGenero.setForeground(Color.BLACK);
                genero.setPreferredSize(dimText);

                fechaNacimiento.setPreferredSize(new Dimension(500, 50));
                fechaNacimiento.setEnabled(false);
                
                lblDireccion.setPreferredSize( dimLabel );
		lblDireccion.setFont(fontLabel);
                lblDireccion.setForeground(Color.BLACK);
		txtDireccion.setPreferredSize( dimText );
		//txtTipoUsuario.setMandatory(true);

                lblEmail.setPreferredSize(dimLabel);
		lblEmail.setFont(fontLabel);
                lblEmail.setForeground(Color.BLACK);
		txtEmail.setPreferredSize(dimText);
		txtEmail.setDisabledTextColor(Color.BLACK);

                lblestado.setPreferredSize(dimLabel);
		lblestado.setFont(fontLabel);
                lblestado.setForeground(Color.BLACK);

                espacio.setPreferredSize(new Dimension(400, 20));
		
		//botones.setPreferredSize( new Dimension(250,25) );
		btnAceptar.setPreferredSize(new Dimension(110,20));
		btnCancelar.setPreferredSize(new Dimension(110,20));
                

		botones.setOpaque(false);

		btnAceptar.setToolTipText("guardar el empleo");
                btnAceptar.setForeground(Color.BLACK);
		btnCancelar.setToolTipText("Cancelar la operación");
                btnCancelar.setForeground(Color.BLACK);
              

		btnAceptar.setMnemonic('a');
		btnCancelar.setMnemonic('c');
                
    }




    public void addComponents() {

        formulario.add(lblSucursal);
        formulario.add(sucursal);

        formulario.add(lblNombreEmpleado);
        formulario.add(txtNombreEmpleado);

        formulario.add(lblApellido);
        formulario.add(txtApellido);

        formulario.add(lblCiudadEmp);
        formulario.add(txtCiudadEmp);

        formulario.add(lblTelfMovil);
        formulario.add(txtTelfMovil);

        formulario.add(lblTelfCasa);
        formulario.add(txtTelfCasa);

        formulario.add(lblNitEmpleado);
        formulario.add(txtNitEmpleado);

        formulario.add(lblGenero);
        formulario.add(genero);

        formulario.add(lblEmpleo);
        formulario.add(empleo);

        formulario.add(espacio);

        formulario.add(fechaNacimiento);

        formulario.add(lblDireccion);
        formulario.add(txtDireccion);

        formulario.add(lblEmail);
        formulario.add(txtEmail);

        formulario.add(lblestado);
        formulario.add(estado);

        botones.add(btnAceptar);
        botones.add(btnCancelar);
      

       
        
        add(formulario);
        add(botones);
       


    }

    public void addEvents() {
       btnAceptar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
                            contEmp = new ControlEmpleado();
                            emp = new Empleado();

                            if(getSucursal().isEmpty() || getTxtNombreEmpleado().isEmpty() || gettxtApellido().isEmpty() || getTxtDireccion().isEmpty() || getTxtCiudadEmp().isEmpty() || getTxtTelfCasa().isEmpty() || getTxtTelfMovil().isEmpty() || getTxtNitEmpleado().isEmpty() || getFechaNacimiento().isEmpty() || getGenero().isEmpty())
                            {
                                setVisible(false);
                                JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de registrar el Empleado o faltan campos por llenar", "Confirmación", JOptionPane.YES_OPTION);
                                setVisible(true);
                            }else{
                            if(getTxtEmail().isEmpty()){
                            StringToDate conv = new StringToDate();
                            String idSuc = getSucursal();
                            StringTokenizer i = new StringTokenizer(idSuc,"-");
                            int idSucursal = Integer.parseInt(i.nextToken());

                            String ide = empleo.getSelectedItem();
                            StringTokenizer em = new StringTokenizer(ide,"-");
                            int idEmpleo = Integer.parseInt(em.nextToken());


                            int telefonoMovil=Integer.parseInt(getTxtTelfMovil());
                            int telfCasa = Integer.parseInt(getTxtTelfCasa());
                            int nit = Integer.parseInt(getTxtNitEmpleado());

                            String fecha = getFechaNacimiento();
                            Date fechaNac = conv.convertir(fecha);

                            emp.setIdEmpleado(getIdEmpleado());
                            emp.setIdSucursal(idSucursal);
                            emp.setNombreEmpleado(getTxtNombreEmpleado());
                            emp.setApellidoEmp(gettxtApellido());
                            //emp.setApellidoMaterno(getTxtApellidoMaterno());
                            emp.setCiudadEmp(getTxtCiudadEmp());
                            emp.setCelularEmp(telefonoMovil);
                            emp.setTelefonoEmp(telfCasa);
                            emp.setNitEmp(nit);
                            emp.setGeneroEmp(getGenero());
                            emp.setFechaNacimiento(fechaNac);
                           // emp.setEstadoCivil(getEstadoCivil());
                            emp.setDireccionEmp(getTxtDireccion());
                           // emp.setCodigoPostal(codigoPos);

                            emp.setEstadoEmp(getEstado());
                            emp.setEmailEmp(" ");
                            emp.setIdEmpleo(idEmpleo);

                            contEmp.ActualizarEmpleado(emp);
                            dispose();
                            JOptionPane.showMessageDialog(null, "El empleado ha sido actualizado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                            }else{
                                StringToDate conv = new StringToDate();
                            String idSuc = getSucursal();
                            StringTokenizer i = new StringTokenizer(idSuc,"-");
                            int idSucursal = Integer.parseInt(i.nextToken());

                            String ide = empleo.getSelectedItem();
                            StringTokenizer em = new StringTokenizer(ide,"-");
                            int idEmpleo = Integer.parseInt(em.nextToken());


                            int telefonoMovil=Integer.parseInt(getTxtTelfMovil());
                            int telfCasa = Integer.parseInt(getTxtTelfCasa());
                            int nit = Integer.parseInt(getTxtNitEmpleado());

                            String fecha = getFechaNacimiento();
                            Date fechaNac = conv.convertir(fecha);

                            emp.setIdEmpleado(getIdEmpleado());
                            emp.setIdSucursal(idSucursal);
                            emp.setNombreEmpleado(getTxtNombreEmpleado());
                            emp.setApellidoEmp(gettxtApellido());
                            //emp.setApellidoMaterno(getTxtApellidoMaterno());
                            emp.setCiudadEmp(getTxtCiudadEmp());
                            emp.setCelularEmp(telefonoMovil);
                            emp.setTelefonoEmp(telfCasa);
                            emp.setNitEmp(nit);
                            emp.setGeneroEmp(getGenero());
                            emp.setFechaNacimiento(fechaNac);
                           // emp.setEstadoCivil(getEstadoCivil());
                            emp.setDireccionEmp(getTxtDireccion());
                           // emp.setCodigoPostal(codigoPos);

                            emp.setEstadoEmp(getEstado());
                            emp.setEmailEmp(getTxtEmail());
                            emp.setIdEmpleo(idEmpleo);

                            contEmp.ActualizarEmpleado(emp);
                            dispose();
                            JOptionPane.showMessageDialog(null, "El empleado ha sido actualizado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                            }
                            
                           }
			}
		});
                 btnCancelar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				//JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                                dispose();
			}
		});

               


               addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				//JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                            dispose();
                        }
		});

         }

    public boolean getEstado() {
        return estado.getState();
    }

    public void setEstado(boolean estado) {
        this.estado.setState(estado);
    }


    public String getFechaNacimiento() {
        return fechaNacimiento.getDateText();
    }

    public void setFechaNacimiento(String fechaNacimiento) {
        this.fechaNacimiento.setDate(fechaNacimiento);
    }


    public String gettxtApellido() {
        return txtApellido.getText();
    }

    public void settxtApellido(String txtApellido) {
        this.txtApellido.setText(txtApellido);
    }

    public String getTxtCiudadEmp() {
        return txtCiudadEmp.getText();
    }

    public void setTxtCiudadEmp(String txtCiudadEmp) {
        this.txtCiudadEmp.setText(txtCiudadEmp);
    }

    public String getTxtDireccion() {
        return txtDireccion.getText();
    }

    public void setTxtDireccion(String txtDireccion) {
        this.txtDireccion.setText(txtDireccion);
    }

    public String getTxtEmail() {
        return txtEmail.getText();
    }

    public void setTxtEmail(String txtEmail) {
        this.txtEmail.setText(txtEmail);
    }


    public String getTxtNitEmpleado() {
        return txtNitEmpleado.getText();
    }

    public void setTxtNitEmpleado(String txtNitEmpleado) {
        this.txtNitEmpleado.setText(txtNitEmpleado);
    }

    public String getTxtNombreEmpleado() {
        return txtNombreEmpleado.getText();
    }

    public void setTxtNombreEmpleado(String txtNombreEmpleado) {
        this.txtNombreEmpleado.setText(txtNombreEmpleado);
    }

    public String getTxtTelfCasa() {
        return txtTelfCasa.getText();
    }

    public void setTxtTelfCasa(String txtTelfCasa) {
        this.txtTelfCasa.setText(txtTelfCasa);
    }

    public String getTxtTelfMovil() {
        return txtTelfMovil.getText();
    }

    public void setTxtTelfMovil(String txtTelfMovil) {
        this.txtTelfMovil.setText(txtTelfMovil);
    }

    public int getIdEmpleado() {
        return idEmpleado;
    }

    public void setIdEmpleado(int idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    public String getGenero() {
        return genero.getSelectedItem();
    }

    public void setGenero(String genero) {
        this.genero.select(genero);
    }

    public String getSucursal() {
        return sucursal.getSelectedItem();
    }

    public void setSucursal(String sucursal) {
        this.sucursal.select(sucursal);
    }
    
    public String getEmpleo() {
        return empleo.getSelectedItem();
    }

    public void setEmpleo(String empleo) {
        this.empleo.select(empleo);
    }


    

    



    public static void main(String[] args) {
       EditarEmpleado emp = new EditarEmpleado();
       // emp.setSucursal(2);
        emp.setVisible(true);
    }

   
}
